perm filename SRCSYS.MID[SS,SYS] blob
sn#426449 filedate 1979-03-18 generic text, type C, neo UTF8
COMMENT ⊗ VALID 00002 PAGES
C REC PAGE DESCRIPTION
C00001 00001
C00002 00002 TITLE SRCSYS
C00008 ENDMK
C⊗;
TITLE SRCSYS
SUBTTL MRC 3/18/79
DEFINE FATAL TEXT
JRST [ OUTSTR [ASCIZ/TEXT
/]
EXIT]
TERMIN
L=1 ? L1=2 ? S=3 ? BP=4
VERBUF: BLOCK 10.
TECCM: ASCIZ\[S,SYS]≠EWSRCLST≠EY5<A>
!FOO!.UBS.≠QB,.XAIDIF/C/D/O/F/S←≠GAI,≠GA≠L.-Z"NOFOO≠'≠
EX≠≠\
SRCSYS: CAI
RESET ; Initialize the world
CLRBFI
OUTSTR [ASCIZ/You better be a wizard if you're running me!
Have you:
. mounted the right tape and
. enabled a PTY?/]
INCHRW
ANDI 177
CAIE "Y
CAIN "y
CAIA
EXIT
CLRBFI
OUTSTR [ASCIZ/
Do you want to watch it?/]
INCHRW
ANDI 177
CAIE "Y
CAIN "y
TDZA S,S
SETO S,
CLRBFI
OUTSTR [ASCIZ/
/]
MOVEI 1 ; don't chomp up lots of CPU cycles
PTYGET L ; Snarf a PTY
FATAL [Unable to get a PTY!]
MOVEI L1,5 ; Log ourselves in on it
PTJOBX L
FATAL [PTY LOGIN failed!]
MOVEI L1,[ASCIZ/ACCESS S,SYS
/]
PTWRS7 L
JSR WATINP
MOVEI L1,[ASCIZ\β
DRD/OPTION=1
.\]
PTWRS7 L ; Send initial command to PTY
JSR WATINP
SKIPE S ; If she's watching it she knows what's going on
OUTSTR [ASCIZ/System version?/]
MOVE BP,[440700,,VERBUF]
VERGET: INCHWL L1 ; Get system version for DIRED
CAIN L1,". ; I forget sometimes
JRST [ OUTSTR [ASCIZ/Hey loser, you didn't need the dot!
/]
JRST VERGET]
PTWR1W L
ANDI L1,177
CAIE L1,↑M
CAIN L1,↑J
CAIA
IDPB L1,BP ; Remember the version for later
CAIE L1,↑J
JRST VERGET
MOVEI L1,"E
PTWR1W L
JSR WATINP
MOVEI L1,[ASCIZ/β
ACCESS T,SYS
/]
PTWRS7 L
JSR WATINP
MOVEI L1,[ASCIZ\β
DELETE *./Q
\]
PTWRS7 L
JSR WATINP
MOVEI L1,[ASCIZ\β
R TECO
ERDRD.\]
PTWRS7 L
MOVEI L1,VERBUF
PTWRS7 L
JSR WATINP
MOVE BP,[440700,,TECCM]
TECLP: PTRD1S L ; Gobble a character from PTY input buffer
JRST [ ILDB L1,BP
JUMPE L1,TECDN
CAIN L1,"≠
MOVEI L1,175
PTWR1S L
JRST [ ADD BP,[070000,,] ; Lossage! Back up byte ptr
TLNE BP,400000
SUB BP,[430000,,1]
JRST TECLP] ; And try again
JRST TECLP]
JUMPN S,TECLP
OUTCHR L1 ; Echo
JRST TECLP ; Loop back
TECDN: MOVEI L1,[ASCIZ/β
REWIND
/]
PTWRS7 L
JSR WATINP
MOVEI L1,[ASCIZ/β
RESTORE @DRD./]
PTWRS7 L
MOVEI L1,VERBUF
PTWRS7 L
MOVEI L1,[ASCIZ/[S,SYS]
/]
PTWRS7 L
JSR WATINP
MOVEI L1,[ASCIZ/β
REWIND
/]
PTWRS7 L
JSR WATINP
MOVEI L1,[ASCIZ\β
R SRCCOM
SRCLST/X
\]
PTWRS7 L
JSR WATINP
MOVEI L1,[ASCIZ\β
TRANSFER/Q ALLDIF.\]
PTWRS7 L
MOVEI L1,VERBUF
PTWRS7 L
MOVEI L1,[ASCIZ/←*.DIF
/]
PTWRS7 L
JSR WATINP
MOVEI L1,[ASCIZ/ETV ALLDIF./]
PTWRS7 L
MOVEI L1,VERBUF
PTWRS7 L
MOVEI L1,[ASCIZ\/N
\]
PTWRS7 L
JSR WATINP
MOVEI L1,[ASCIZ\XDEL
ε/∞F
\]
PTWRS7 L
JSR WATINP
MOVEI L1,175
PTWR1W L
MOVEI L1,"E
PTWR1W L
JSR WATINP
MOVEI L1,[ASCIZ/SPOOL ALLDIF./]
PTWRS7 L
MOVEI L1,VERBUF
PTWRS7 L
MOVEI L1,[ASCIZ/
/]
PTWRS7 L
JSR WATINP
MOVEI L1,[ASCIZ\KJOB/F
\]
PTWRS7 L
FLUSH: JSR WATINP
MOVEI L1,(L)
TTYJOB L1,
JUMPN L1,FLUSH
PTYREL L
OUTSTR [ASCIZ/SRCSYS done!
/]
EXIT
; Wait until input wait
WATINP: 0
PTRD1S L
JRST [ MOVEI L1,6
PTJOBX L
JRST [ SLEEP ? JRST WATINP+1]
PTRD1S L ; Paranoia
JRST 2,@WATINP
JRST .+1]
JUMPN S,WATINP+1
OUTCHR L1
JRST WATINP+1
END SRCSYS